#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+2;

string s1,s2;
int nex[N];

inline void getNext(){
    nex[0] = -1;
    int i= -1,j=0;
    while(s2[j]!='\0'){
        if(i<0||s2[i]==s2[j]){
            i++;
            j++;
            nex[j] = i;
        }else{
            i = nex[i];
        }
    }
}

int main(){
    cin>>s1>>s2;
    s2 = s2+" ";
    getNext();
    // for(int i=1;s2[i]!='\0';i++) printf("%d ",nex[i]);
    // return 0;
    
    int i = 0,j = 0;
    while(s1[i]!='\0'){
        if(j<0||s1[i]==s2[j]){
            i++;
            j++;
        }
        else{
            j = nex[j];
        }
        if(s2[j]==' '){
            printf("%d\n",i-s2.length()+2);
        }
    }
    for(int i=1;s2[i]!='\0';i++) printf("%d ",nex[i]);
    return 0;
}